package org.deng.learn.dubbo.provider;

import com.alibaba.dubbo.config.ApplicationConfig;
import com.alibaba.dubbo.config.ProtocolConfig;
import com.alibaba.dubbo.config.RegistryConfig;
import com.alibaba.dubbo.config.ServiceConfig;
import org.deng.learn.dubbo.api.service.IUserService;
import org.deng.learn.dubbo.provider.service.imp.UserServiceImpl;

import java.io.IOException;

/**
 * @author 邓力宾
 * @Desc
 * @since 2020/6/17 上午9:46
 */
public class ProviderServer {

    public void startServer(int port){
        // 服务配置
        ServiceConfig<IUserService> serviceConfig = new ServiceConfig<>();
        // 服务接口
        serviceConfig.setInterface(IUserService.class);
        // 协议
        serviceConfig.setProtocol(new ProtocolConfig("dubbo", port));
        // 注册中心 设置一个空的
        //serviceConfig.setRegistry(new RegistryConfig(RegistryConfig.NO_AVAILABLE));
        // 注册中心 发广播 （广播注册中心注册的服务）（客户端做同样设置）
        serviceConfig.setRegistry(new RegistryConfig("multicast://224.1.2.3:11111"));
        // 应用名称
        serviceConfig.setApplication(new ApplicationConfig("appServer-1"));
        // 服务实现
        serviceConfig.setRef(new UserServiceImpl(port));
        // 暴露服务
        serviceConfig.export();
        System.out.println("服务已开启,端口:" + port);
    }

    public static void main(String[] args) throws IOException {
        // 开启多个， 负载
        new ProviderServer().startServer(20880);
        new ProviderServer().startServer(20881);
        new ProviderServer().startServer(20882);
        System.in.read();
    }
}
